<?php
/**
 * Validátor na ověřování uživatelského jména
 *
 * @author Petr Laslo
 * @license MIT License
 * @package Knihovna\Validate
 * @link https://code.google.com/p/knihovna/
 */
class Knihovna_Validate_UserNameUnique extends Zend_Validate_Abstract
{
    /**
     * chybové hlášení
     */
    const NOT_UNIQUE = 'notUnique';
    
    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_UNIQUE => "Uživatel '%value%' existuje"
    );

    /**
     * Porovná zadanou hodnotu s hodnotami v databázi
     *
     * @param  mixed $value
     * @param  array $context
     * @return boolean
     */
    public function isValid($value, $context = null)
    {
        $value = (string) $value;
        $this->_setValue($value);
        
        $user = new Knihovna_Model_DbTable_Users();
        $row = $user->fetchEntryByName($value);

        if (empty($row))
        {
            return true;
        }

        $this->_error(self::NOT_UNIQUE);
        return false;
    }
}
